var express = require('express');
var uploadRouter = express.Router();
uploadRouter.use(express.static(__dirname + '/upload'));
// const sharp = require('sharp');

var path = require("path")
var fs = require("fs");
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();


/**上传图片
 * @param {file}
 * 
 * */
uploadRouter.post('/uploadImg', multipartMiddleware, function (req, res) {
  //执行fs模块的创建读对象方法，存放上传文件的默认路径可以在上面req.files里找到，一般应该都是默认传到云服务器的tmp文件夹里 获取源文件对象
  let source = fs.createReadStream(req.files.file.path);
  let imgPath = path.join('/public/resources/uploadImg/', new Date().getTime() + '-' + req.files.file.originalFilename);//这里写好文件要转储到哪个地方
  let newPath = path.resolve(__dirname, '..') + imgPath;
  var dest = fs.createWriteStream(String(newPath), { encoding: 'utf-8' });//然后就可以用fs模块的创建写对象方法获取要被写入的文件对象

  try {
    source.pipe(dest);
    source.on('end', function () {
      fs.unlinkSync(req.files.file.path);//删除源文件
      let data = req.protocol + '://' + req.headers.host + imgPath.split('public')[1];
      res.send(global.common.resJson(0, '上传成功', data));
    });
    source.on('finish', function (err) {
      res.send(JSON.stringify(dest));
    });
  } catch (e) {
    res.send(err);
  }

});


// uploadRouter.post('/upload', multipartMiddleware, async function (req, res) {

//   try {
//     //执行fs模块的创建读对象方法，存放上传文件的默认路径可以在上面req.files里找到，一般应该都是默认传到云服务器的tmp文件夹里 获取源文件对象
//     let source = fs.createReadStream(req.files.file.path);
//     let imgPath = path.join('/public/resources/uploadImg/', new Date().getTime() + '-' + req.files.file.originalFilename);//这里写好文件要转储到哪个地方
//     let newPath = path.resolve(__dirname, '..') + imgPath;
//     var dest = fs.createWriteStream(String(newPath), { encoding: 'utf-8' });//然后就可以用fs模块的创建写对象方法获取要被写入的文件对象
//     source.pipe(dest);
//     source.on('end', async function () {
//       fs.unlinkSync(req.files.file.path);//删除源文件
//       let imgPath1 = path.join('/public/resources/uploadImg/', new Date().getTime() + '-new-' + req.files.file.originalFilename);//这里写好文件要转储到哪个地方
//       let newPath1 = path.resolve(__dirname, '..') + imgPath1;
//       await sharp(newPath).webp({ quality: 60 }).toFile(newPath1);
//       let data = req.protocol + '://' + req.headers.host + imgPath1.split('public')[1];
//       res.send(global.common.resJson(0, '上传成功', data));
//     });
//     source.on('finish', function (err) {
//       res.send(JSON.stringify(dest));
//     });
//   } catch (e) {
//     res.send(err);
//   }
// })


module.exports = uploadRouter;